package models

import (
	"time"

	"gorm.io/gorm"
)

type Photo struct {
	ID          uint      `gorm:"primaryKey;autoIncrement" json:"id"`            // 图片ID
	UserID      uint      `gorm:"not null" json:"user_id"`                       // 上传用户ID
	URL         string    `gorm:"size:255;not null" json:"url"`                  // 图片URL
	Longitude   float64   `gorm:"type:decimal(10,6)" json:"longitude,omitempty"` // 经度
	Latitude    float64   `gorm:"type:decimal(10,6)" json:"latitude,omitempty"`  // 纬度
	IsHidden    bool      `gorm:"default:false" json:"is_hidden"`                // 是否隐藏
	Status      int       `gorm:"default:0" json:"status"`                       // 状态（0-审核中，1-正常，2-封禁）
	UploadedAt  time.Time `gorm:"default:CURRENT_TIMESTAMP" json:"uploaded_at"`  // 上传时间
	TakenAt     time.Time `gorm:"type:datetime" json:"taken_at,omitempty"`       // 拍摄时间
	Aperture    string    `gorm:"size:20" json:"aperture,omitempty"`             // 光圈（如 f/1.8）
	Shutter     string    `gorm:"size:20" json:"shutter,omitempty"`              // 快门（如 1/200s）
	ISO         uint      `gorm:"" json:"iso,omitempty"`                         // 感光度
	FocalLength string    `gorm:"size:20" json:"focal_length,omitempty"`         // 焦段（如 35mm）
	Device      string    `gorm:"size:100" json:"device,omitempty"`              // 拍摄设备
	Category    string    `gorm:"size:20" json:"category"`
}

// BeforeCreate 设置默认值
func (p *Photo) BeforeCreate(tx *gorm.DB) (err error) {
	if p.UploadedAt.IsZero() {
		p.UploadedAt = time.Now()
	}
	return nil
}

// TableName 指定表名
func (Photo) TableName() string {
	return "photo"
}
